草庐IT

C++ std::move 混淆

全部标签

c++ - socket编程与windows和unix/linux的混淆

您好,我正在尝试使用C++进行套接字编程。我需要确认或拒绝这个逻辑。我认为socket.h头文件是为UNIX系统设计的,而对于Windows,一切都是通过winsock.h完成的。这是正确的吗? 最佳答案 对于Windows,您需要winsock2.h和ws2tcpip.h。在Linux上,您需要sys/socket.h和sys/types.h用于套接字函数和netinet/in.h用于IP相关结构。其他一些区别:Windows使用SOCKET作为套接字描述符,而Linux使用intWindows有closesocket()来关闭套

c++ - 预分配 std::string 以传递到 WinAPI

我很好奇下面的代码是否正确?我在较旧版本的VS2008上运行它,用于仅限Windows的C++项目。我的目标是在std::string中预分配内存,以将其传递到知道所需字符大小的WinAPI中://'hWnd'=windowhandleintnLn=GetWindowTextLength(hWnd);//Textvariabletocollecttextinstd::wstringstr;str.reserve(nLn);GetWindowText(hWnd,(LPTSTR)str.data(),nLn);我在这里担心的是str.data()返回constwchar_t*并且GetWi

.net - 从 system::String 转换为 std::string

要将system::String转换为std::string,我使用以下代码:IntPtrp=Marshal::StringToHGlobalAnsi(PORT);stringnewString=static_cast(p.ToPointer());Marshal::FreeHGlobal(p);但是,我拿到代码的地方使用IntPtrp=Marshal::StringToHGlobalAnsi(PORT);char*newString=static_cast(p.ToPointer());Marshal::FreeHGlobal(p);但是出于某种原因,如果我执行char*版本,我会在

windows - 带有 std::bind 的代码未编译,错误 C2780:需要 6 个参数 - 提供 8 个

考虑代码:#include#include#includeclassCFileOperationWatcher{public:CFileOperationWatcher(){}virtualvoidonProgressChanged(uint64_tsizeProcessed,uint64_ttotalSize,size_tnumFilesProcessed,size_ttotalNumFiles,uint64_tcurrentFileSizeProcessed,uint64_tcurrentFileSize){}virtual~CFileOperationWatcher(){}voi

windows - 在批处理文件中复制( move )文件的快速方法

我在一个目录中有大量文件需要验证。问题是,文件资源管理器加载文件列表的时间太长,我的整个计算机都变慢了。所以我写了下面的代码通过将一定数量的文件(显示为%limit%并且将是700)move到编号的文件夹(显示为%DirN%)for/f"tokens=1-2delims=:"%%ain('dir/b/a-d^|findstr/n/v".bat.cmd.txt"')doif%%alss%limit%robocopy"%cd%""%cd%\%DirN%""%%b"/mov>nul这段代码本身在设计时运行良好,但发现了一个额外的问题:速度。由于我正在处理占用20GB磁盘空间的文件,因此代码似

c++ - 使用 std::chrono 库调整应用程序 fps 但出现奇怪的行为

我使用std::chronoc++库编写了下面的代码,我想做的是修复应用程序的FPS在60上,但我得到50FPS,肯定不是性能问题因为我什么都没有计算。但这肯定是无效用法或错误。TARGET_FPS宏设置为目标FPS我想得到,然后是控制台窗口显示真实的实际FPS,以下几行显示我设置的值TARGET_FPS到,并且每个都与最终的FPS相关联.TARGET_FPS---->FPS60----->5090----->50100----->1001000----->10010000----->100whatever----->100即使我定义了TARGET_FPS到1000000000我得到1

c++ - 我正在使用 std::bitset 并尝试创建两个大小为 100,000,000,000 的数组 std::bitset

我正在使用std::bitset并尝试创建两个大小为100,000,000,000的数组std::bitset。结果,程序只占了我298MB的RAM,但必须占~24GB。我有32GBRAM,现在有26GB可用。当我为x86构建代码时,它编译并可以启动,但对于x64,它显示以下内容:错误C2148:数组总大小不得超过0x7fffffff字节。如何修复它并且不减小bitset数组的大小?我尝试制作2个全局数组。另外,我在Microsoftvisualstudio->project->name_projectproperties->configurationproperties->linke

php - 真实路径目录名混淆

我正在构建的配置文件中有这段代码:define("PROCESSOR_PATH",realpath(dirname(__FILE__).'/usermanager/processors'));define("LIBRARY_PATH",PROCESSOR_PATH.'/library');define("TEMPLATE_PATH",realpath(dirname(__FILE__).'/usermanager/assets/templates'));如果我在包含我的配置文件后调用这些常量中的任何一个,我什么也得不到。所以即使我这样做:echoPROCESSOR_PATH;没有回应。

c++ - 与 VS2013 相比,gcc 4.7.2 中的 std::map 实现效率非常低?

有人可以帮我理解std::map容器是如何实现的吗?我有一个包含原子成员的类,我不需要调用复制构造函数,所以我使用c++11delete运算符来抑制复制构造函数的隐式生成。MyCalss(constMyClass&a)=delete;这在我的Windows构建中运行良好,但是在Linux中,我收到一条错误消息,通知我std::map类的[]运算符正在尝试调用已删除的函数。在WindowsVS2013和LinuxGCC4.7.xmap实现之间似乎存在重大差异。这促使我做了一个关于如何将对象插入map的实验。我写了这个小示例程序:#include#include#include#inclu

c++ - std::chrono::system_time 的 Visual Studio 2017 CRT 实现使用什么时钟?

chrono标题中的注释只是说//wrapsGetSystemTimePreciseAsFileTime/GetSystemTimeAsFileTime但它实际使用的是什么(即我期望的精度是多少)?该实现调用_Xtime_get_ticks,但该函数是不透明的。 最佳答案 CRT在可用时调用GetSystemTimePreciseAsFileTime,否则调用GetSystemTimeAsFileTime。GetSystemTimePreciseAsFileTime为您提供highestpossiblelevelofprecisio